#异常处理：避免身高、体重、年龄出现负值和零的循环
while True:
    #输入用户信息
    input_str = input("请输入您的性别、体重/kg、身高/cm、年龄，以空格分隔: ")
    inputs = input_str.split()

    if len(inputs) != 4:
        print("输入格式有误，请依次输入性别、体重、身高、年龄，并以空格分隔开")
        continue

    gender, weight, height, age = inputs

    if gender.lower() not in ['男', '女']:
        print("性别输入有误，请重新输入")
        continue

    try:
        age = int(age)
        height = int(height)
        weight = float(weight)
        if age < 0 or height < 0 or weight < 0:
            print("年龄、身高或体重不能为负数，请输入正数")
            continue
        if age == 0 or height == 0 or weight == 0:
            print("年龄、身高或体重不能为零，请输入正数")
            continue
    except ValueError:
        print("年龄、身高或体重输入有误，请重新输入")
        continue


    #分性别计算
    if gender.lower() == '男':
        bmr = 66 + (13.75 * weight) + (5 * height) - (6.8 * age)
    else:
        bmr = 655 + (9.56 * weight) + (1.85 * height) - (4.68 * age)

    print("您的基础代谢率（BMR）为：{:.2f} 千卡".format(bmr))

    #是否继续计算
    choice = input("是否继续计算BMR？（y/n）")
    if choice.lower() != 'y':
        break